Eu tenho um nome de estatísticas de array como maçã X banana Y kiwi z Preciso colocar maçã, banana e Kiwi em uma matriz Frutas e X, Y e Z em uma matriz chamada alfabetos. Qualquer mecanismo simples de C # para isso, por favor?
Use o IEnumerable. Onde a sobrecarga que fornece o índice. var frutas = statsname.Where ((s, i) => i% 2 == 0) .ToArray (); var alfabetos = statsname.Where ((s, i) => i% 2! = 0) .ToArray (); | Roubado de How to get Alternate elements using Enumerable in C # var frutas = meuArray.Where ((t, i) => i% 2 == 0) .ToArray (); var alfabetos = meuArray.Where ((t, i) => i% 2 == 1) .ToArray (); | Se eu entendi que você questiona corretamente o que quer é muito simples: Você deseja colocar frutas em uma matriz de frutas e o mesmo para alfabetos e elas aparecem alternativamente na matriz statsname, então: para (int i = 0, j = 0; i list = new List () {"apple", "X", "banana", "Y", "Kiwi", "z"}; var result = list.Select ((l, i) => new {l, i}) .GroupBy (p => p.i% 2) .Select (x => x.Select (v => v.l) .ToList ()) .Listar(); Então você tem uma lista de listas: | list fruits = new List (); list alphabet = new List (); para (int i = 0; i everyOther (coleção IEnumerable ) { usando (var e = coleção.GetEnumerator ()) { while (e.MoveNext ()) { rendimento retorno e.Current; e.MoveNext (); // pula um } } } Você pode usar System.Linq.Skip para pular o primeiro elemento. string [] palavras = "maçã X banana Y Kiwi z" .Split (); var frutas = todosOutros (palavras); var alfabetos = todosOutros (palavras.Skip (1)); Basta usá-los como uma nova coleção ou chamar .ToArray () ou .ToList () neles: foreach (string f em frutas) Console.WriteLine (f); string [] umArray = frutas.ToArray (); // usando System.Linq Agora você tem o que precisa. Iteradores são métodos que geram retorno, consulte Iteradores (Guia de programação C #). Esta é uma característica muito forte da linguagem. Você pode: pular elementos decorar elementos mudar a ordem concatenar sequências (consulte System.Linq.Concat) ... | Aqui está um código de trabalho, espero que seja útil para você: using System; using System.Collections.Generic; using System.IO; usando System.Linq; using System.Text; using System.Threading.Tasks; espaço de nomes ReadFile { programa de aula { static void ReadFile (string filePath, List custumerNames, List phoneNumbers) { string line = string.Empty; var fileStream = new StreamReader (filePath); bool isPhoneNumber = true; while ((line = fileStream.ReadLine ())! = null) { if (isPhoneNumber) { phoneNumbers.Add (Convert.ToInt32 (linha)); isPhoneNumber = false; } outro { custumerNames.Add (linha); isPhoneNumber = true; } } fileStream.Close (); } static void Main (string [] args) { Console.WriteLine ("Começou a ler o arquivo ..."); List custumersNamesList = new List (); List custumersPhonesNumbers = new List (); ReadFile ("SampleFile.txt", custumersNamesList, custumersPhonesNumbers); // Supondo que ambas as listas tenham o mesmo comprimento. para (int i = 0; i